package van.planifolia.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.VendorExtension;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;

/**
 * Created by Intellij IDEA<br>
 * Swagger2的配置类，需要标注他为配置类
 * @author Planifolia.Van
 * @version 1.0
 * @date 2022/11/18 16:35
 */
@Configuration
public class SwaggerConfig {
    /**
     * Swagger的核心功能类Docket，要把他注册到容器中
     * @return Docket对象
     */
    @Bean
    public Docket docketBean(){
        // 我们要配置Swagger界面的属性的话可以直接在new出来的Docket对象后面直接.方法进行配置

        return new Docket(DocumentationType.SWAGGER_2)
                // 设置组名字
                .groupName("UserMessageCRUD")
                // 设置Api的信息，这里面他要的是一个ApiInfo对象，我们可以在这给他new出来也可单独写一个方法来进行配置
                .apiInfo(new ApiInfo(
                        // 项目的标题
                        "用户信息CRUD",
                        // 描述
                        "对User表的增删改查操作",
                        // 版本号
                        "1.2.1",
                        // 服务条款地址
                        "https://alibaba.com",
                        // 开发者的信息
                        new Contact("Planifolia.Van","https://www.planifolia.van","zhenyuncui@gmail.com"),
                        // 执照，以及许可地址
                        "百度",
                        "https://baidu.com",
                        // 拓展信息
                        new ArrayList<>()
                        // 开启筛选
                )).select()
                // 使用请求路径筛选。所有请求路径开头为user的
                .paths(e -> e.startsWith("/user"))
                // 使用包扫描。扫描controller包下的
                .apis(RequestHandlerSelectors.basePackage("van.planifolia.controller"))
                .build();
    }
}
